AWSクイックスタート:MongoDB on AWS がアップデートされました
こんにちは、菊池です。
AWSクイックスタートでは、公開されたテンプレートを利用することで、セキュリティ/可用性のベストプラクティスに沿った環境を簡単に構築できます。
AWS クイックスタート:AWS で代表的なデプロイメントを自動化
当ブログでも、クイックスタートの1つであるMongoDB on AWSのデプロイを紹介しました。
今回、このMongoDB on AWSがアップデートされ、MongoDB及びAWSの最新機能に対応しました。
AWS Quick Starts MongoDB on AWS
主な変更点
構成イメージは、公式ページの紹介を参照ください。今回のアップデートによる、主な変更点を紹介します。
MongoDB Version 3.2/3.4に対応
以前はMongoDB 2.6または3.0の環境がデプロイされました。今回のテンプレートでは、最新のメジャーバージョンであるバージョン3.6と、1つ前のメジャーバージョンの3.2に対応しています。テンプレートのパラメータでメジャーバージョンを指定すると、それぞれの最新マイナーバージョンがデプロイされます。
また、ストレージエンジンも3.2以降のデフォルトであるWired Tigerで環境構築されます。当然、3.2以降で対応した機能が利用可能です。
NAT Gateway対応
DBノードのインスタンスは、以前と同様にPrivate Subnetに配置されます。Private Subnetのインスタンスからインターネットへ通信するため、以前のテンプレートではNATインスタンスがデプロイされました。一方で、今回のテンプレートでは、マネージドサービスであるNAT Gatewayが起動します。さらに、Multi-AZ配置となりますので、より可用性が向上したといえるでしょう。
シャーディングは非対応に
一方で、以前のテンプレートでは可能だった、シャード構成のデプロイは省略されています。それに伴い、不要になるConfigサーバも構成されません。
ただ、バージョン3.2以降、Configサーバでもレプリカセット構成がサポートされデフォルトになっています。今回の新しいテンプレートを同じVPCに複数デプロイすることで、比較的簡単にシャーディング環境の構成が可能です。こちらについては手順を検証し、別途紹介したいと思います。
試してみた
実際に構築してみました。公式ドキュメントの手順に従えば、特に迷う点もなくデプロイが可能でした。
MongoDB on the AWS Cloud: Quick Start Reference Deployment
なお、上記ドキュメントですが、現時点(2017年6月)では英語版のみ最新の情報に更新されています。
従来と同様、VPCを含めて新規作成するか、既存のVPCにデプロイするか選択が可能です。VPCも併せてデプロイしたところ、ベースのCloudFormationテンプレートから、6つのテンプレートが呼び出されてデプロイされました。
構築ができたらインスタンスに接続し、MongoDBの環境を確認してみます。
$ mongo admin -u user -p MongoDB shell version v3.4.5 Enter password: connecting to: mongodb://127.0.0.1:27017/admin MongoDB server version: 3.4.5 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user s0:PRIMARY>
構築時点で最新のバージョン3.4.5です。
s0:PRIMARY> db.version() 3.4.5 s0:PRIMARY>
ストレージエンジンはWired Tigerとなっています。
s0:PRIMARY> db.serverStatus().storageEngine { "name" : "wiredTiger", "supportsCommittedReads" : true, "readOnly" : false, "persistent" : true } s0:PRIMARY>
レプリカの設定です。
s0:PRIMARY> rs.conf() { "_id" : "s0", "version" : 1, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 1, "host" : "10.0.6.181:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 10, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "10.0.52.115:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 5, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 3, "host" : "10.0.33.185:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 5, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : 2000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("59522d885fd48b5e72294e13") } } s0:PRIMARY>
起動設定も確認してみました。
$ cat /etc/mongod.conf net: port: 27017 systemLog: destination: file logAppend: true path: /log/mongod.log storage: dbPath: /data journal: enabled: true security: authorization: enabled keyFile: /mongo_auth/mongodb.key processManagement: fork: true pidFilePath: /var/run/mongod/mongod.pid replication: replSetName: s0
まとめ
AWSのベストプラクティスに沿ってMongoDB環境を構成してくれる、クイックスタート:MongoDB on AWSの更新を紹介しました。
実際に構築したところ、以前より実運用環境への適用がしやすくなった印象を持ちました。シャード構成が省略され、機能ダウンに思えるかもしれませんが、逆に柔軟に使えるようになったようです。
公開から時間が経過し、プロダクトのバージョンアップやAWSの新機能によりベストプラクティスが変化してきていました。アップデートをキャッチアップし、さらに使いやすくしてくれるのは素晴らしいですね。